As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems, including servers, workstations, and other computers, are often grouped into computer networks, including networks having a client-server architecture in which servers may access storage, including shared storage, in response to request from client computers of the network. The servers, also known as physical hosts, may include one or more virtual machines running on the host operating system and the host software of the physical host. Each virtual machine may comprise a virtual or “guest” OS. A single physical host may include multiple virtual machines in which each virtual machine appears as a logical machine on a computer network. The presence of one or more virtual machines on a single physical host provides a separation of the hardware and software of a networked computer system. In certain instances, each virtual machine could be dedicated to the task of handling a single function. For example, in a particular embodiment, one virtual machine could be a mail server, while another virtual machine present on the same physical host could be a file server. In addition, any number of programs, e.g., operating systems and/or applications, may run on each virtual machine.
In many computer systems, it is often desirable to reduce downtime or inaccessibility caused by failure of a physical host, virtual machine, or a program. However, conventional approaches to diagnosing and recovering from failures address only “hard” failures occurring in the host operating system of a physical host, or a physical failure of the physical host. These traditional approaches do not provide automated methods of diagnosing “soft” failures, such as those failures occurring inside a virtual machine, such as a guest operating system failure or failure of another program running on the virtual machine. Accordingly, systems and methods that provide for diagnosis and recovery of software and operating system failures occurring in virtual machines are desired.